package com.cfs.svcimpl.sys;

import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;

import com.cfs.dao.sys.OrgDao;
import com.cfs.svc.sys.OrgService;
import com.cfs.po.sys.CommonBean;
import com.cfs.po.sys.GenRes;
import com.cfs.po.sys.LongId;
import com.cfs.po.sys.Org;

/**
 *	组织管理服务类
 *	@author wang.yujie
 * 	@since 2012-12-23
 *	@version 1.0
 */
@Path("/Orgs")
public class OrgServiceImpl implements OrgService {
	
	private OrgDao dao;
	
	public OrgDao getDao() {
		return dao;
	}

	public void setDao(OrgDao dao) {
		this.dao = dao;
	}

	@POST
	@Path("/c")
	@Override
	public GenRes add(Org[] orgs) {
		return dao.add(orgs);
	}

	@PUT
	@Path("/u")
	@Override
	public GenRes update(Org[] orgs) {
		return dao.update(orgs);
	}

	/**
	 * POST
	 * 组织删除
	 * @param ids 对数组进行包装
	 * @return
	 */
	@POST
	@Path("/d")
	@Override
	public GenRes delete(LongId ids) {
		return dao.delete(ids.getIds());
	}

	@GET
	@Path("/q/{id}")
	@Override
	public Org get(@PathParam("id") long id) {
		return dao.get(id);
	}

	/**
	 * 查询子组织
	 */
	@GET
	@Path("/q/sub/{parentId}")
	@Override
	public Org[] getSub(@PathParam("parentId") String parentId) {
		return dao.getSub(parentId);
	}
	/**
	 * 查询所有子组织
	 */
	@GET
	@Path("/q/allSub/{parentId}")
	public Org[] getAllSub(@PathParam("parentId") String parentIds){
		return dao.getAllSub(parentIds);
	}
	/**
	 * 移动组织
	 */
	@GET
	@Path("/u/move/{id}/{move2id}")
	@Override
	public GenRes move2(@PathParam("id") Long id, @PathParam("move2id") Long move2id){
		return dao.move2(id,move2id);
	}
	
	/**
	 * 禁用/激活组织
	 */
	@PUT
	@Path("/u/forbid")
	@Override
	public GenRes forbidOrg(long id){
		return dao.forbidOrg(id);
	}

	/**
	 * 根据levels获取组织
	 */
	@GET
	@Path("/q/orgs/{levels}")
	@Override
	public Org[] getOrgsByLevels(@PathParam("levels") int levels) {
		return dao.queryByLevels(levels);
	}
	
	/**
	 * 导入组织结构
	 * @param fpath
	 * @return
	 */
	@GET
	@Path("/init")
	public void initOrgs() {
		dao.initOrgs("c:\\initOrgs.xlsx");
	}

	/**
	 * 分公司查办事处
	 */
	public Org[] getAllAgency(long id){
		return dao.getAllAgency(id);
	}
	/**
	 * 分公司查片区
	 */
	public Org[] getAllArea(long id){
		return dao.getAllArea(id);
	}
	/**
	 * 分公司查门店
	 */
	public Org[] getAllPoint(long id){
		return dao.getAllPoint(id);
	}
	
	/**
	 * 名字模糊查询
	 */
	public Org[] getOrgByName(Org org){
		return dao.getOrgByName(org);
	}
	/**
	 * 办事处查询门店
	 */
	@Override
	public Org[] getAgencyPoint(long id) {
		return dao.getAgencyPoint(id);
	}
	
	/**
	 * 电视二期需求新增
	 * 根据登录的组织id及组织层级信息，获取其
	 * 关联子组织信息
	 * 1.总部查分公司
	 * 2.分公司查办事处
	 * 3.办事处查片区
	 * 4.片区查门店
	 * 5.门店自查
	 */
    public Org[] getSubOrgArrays(long id,int level){
    	return dao.getSubOrgArrays(id,level);
    }

	/**
	 * 电视二期需求新增
	 * 根据登录的组织id及组织层级信息，获取其
	 * 关联子组织信息
	 * 1.总部查分公司
	 * 2.分公司查办事处
	 * 3.办事处查片区
	 * 4.片区查门店
	 * 5.门店自查
	 */
    public List<Org> getSubOrgArraysForPad(CommonBean commBean){
//    	return dao.getSubOrgArraysForPad(commBean);
    	return null;
    }
    
    
	/**
	 * 电视二期需求新增
	 * 根据登录的组织id及组织层级信息，获取
	 * 该节点下的所有门店组织id数组
	 * 1.总部查分公司
	 * 2.分公司查办事处
	 * 3.办事处查片区
	 * 4.片区查门店
	 * 5.门店自查
	 */
    public Long[] getPointsByOrgs(long id,int level){
    	return dao.getPointsByOrgs(id,level);
	}
}
